home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #1
/
Amiga Plus 1995 #1.iso
/
demoversionen
/
documentum_demo
/
serienbrief.drx
< prev
next >
Wrap
Text File
|
1994-12-13
|
5KB
|
185 lines
/* Demo-AREXX-Skript zur Serienbriefverwaltung mit Documentum_2.0*/
/* für Datenbanken nach folgendem Format:
Name,Vorname,Straße
Mustermann,Monika,Musterstr. 1
Jung,Kalle,Teststr. 2
*/
/* trace r */
temp = addlib("rexxsupport.library",0,-30,0)
quit='NOQUIT' /* Merkvariable, ob Documentum_2.0 neu gestartet wurde, */
/* oder ob es schon lief */
textname=''
address command
/* richte eigenen Messageport ein, an den Documentum_2.0 seine
Messages schicken kann
am Port 'DOCU2_SCRIPT' erkennt Documentum_2 beim Start, ob es von einem
ARexx-Programm gestartet wurde und bleibt dann im Hintergrund. Darum muss
als Erstes dieser Port installiert werden: */
myport = OPENPORT("DOCU2_SCRIPT")
if (myport='0000 0000'x) then do
say 'Kann den messageport nicht öffnen'
exit 20
end
succ=show(Ports,DOCUMENTUM2) /* läuft Documentum_2.0? */
if succ = 0 then do
'Documentum:Documentum_2' /* nein? dann starten */
quit='QUIT' /* wenn neu gestartet, dann */
'waitforport DOCUMENTUM2' /* läuft Documentum_2.0 jetzt? */
if rc ~=0 then do
say 'Ich kann leider Documentum_2 nicht starten!'
call closeport 'DOCU2_SCRIPT'
exit 20
end
else arg textname ' ' filename
end
else arg filename
succ=OPEN(datei,filename,'R')
if succ = 0 then do
say 'Ich kann leider die Datei nicht öffnen'
call cleanexit
exit 20
end
address DOCUMENTUM2
/* Wenn das Script Documentum_2 gestartet hat, müssen wir noch das Öffnen
eines Textes und das Ausdrucken desselben auslösen! */
if (COMPARE(quit,'QUIT') = 0) then do
'OPEN' textname /* Öffne Window und lade angegebenen Text */
'PRINT 1 1 -1' /* Drucke 1 exemplar pro Datensatz, */
end
/* Im anderen Fall (das Script wurde von Documentum_2 gestartet) schicken
wir ein 'SET' an Documentum, der besagt, daß das Script korrekt läuft */
else do
'SET'
end
maxnames = getnames()
call getdata
do forever
do forever
succ=waitpkt('DOCU2_SCRIPT')
if (succ) then leave
end
do forever
packet = getpkt('DOCU2_SCRIPT')
if (packet ~= '0000 0000'x) then leave
end
/* Documentum schickt Message mit Command "GET" und Argument Variablenname*/
/* wir holen jetzt das argument aus der Message und schauen, ob wir eine */
/* solche Variable haben, wenn ja schicken wir eine Message an Documentum */
/* von folgendem Format: SET Varname Varinhalt */
/* Dabei gehen folgende Fehler an Documentum:
0 alles klar
3 Variable unbekannt
5 unbekanntes Kommando
8 Datei ist zuende */
temp = getarg(packet,0)
parse upper var temp befehl ' ' varname
select
/* Variablen-Abfrage ? */
when compare("GET",befehl)=0 then do
temp = getvari(varname)
if length(temp)= 0
then call reply packet,3 /* Fehler an Documentum melden */
else do
call reply packet,0 /* Message beantworten, KEIN Fehler */
'SET' varname temp /* Message an Documentum schicken */
end
end
/* Beenden des Druckvorgangs */
when compare("ABORT",befehl)=0 then do
call reply packet,0
leave
end
/* Einlesen des nächsten Datensatzes */
when compare("NEXT",befehl)=0 then do
succ = getdata()
if succ=0 then do /* kein Datensatz mehr da -> Ende */
call reply packet,8
leave
end
call reply packet,0
end
otherwise call reply packet,5 /* unbekanntes Kommando */
end
end
call close datei
call cleanexit
exit
cleanexit:
if (COMPARE(quit,'QUIT') = 0) then address DOCUMENTUM2 'QUIT' /* Documentum beenden */
call closeport 'DOCU2_SCRIPT'
return 0
/* Hier folgen die Programmsegmente, die die Datensätze behandlen */
getnames:
i=1
varnames.i=""
do until (compare(zeichen,d2c(10)) = 0)
if EOF(Datei) then return 0
zeichen = upper(readch(Datei,1))
if (compare(zeichen,",")=0) then do
i=i+1
varnames.i=""
end
else do
if (compare(zeichen,d2c(10)) = 1) then do
varnames.i = varnames.i||zeichen
end
end
end
return i
getdata:
i=1
varinhalt.i=""
do until (compare(zeichen,d2c(10)) = 0)
if EOF(Datei) then return 0
zeichen = readch(Datei,1)
if (compare(zeichen,",")=0) then do
i=i+1
varinhalt.i=""
end
else do
if (compare(zeichen,d2c(10)) = 1) then do
varinhalt.i = varinhalt.i||zeichen
end
end
end
return 1
getvari:
do i = 1 to maxnames
arg suchvar
if compare(suchvar,varnames.i) = 0 then do
temp = varinhalt.i
if length(temp)=0 then temp = ' '
return temp
end
end
return ''